EXEC এবং sp_executesql এর ব্যবহার

Dynamic SQL এবং T-SQL - টি-এসকিউএল (T-SQL) - Database Tutorials

364

EXEC এবং sp_executesql দুটি T-SQL কমান্ড, যা ডাইনামিক SQL এক্সিকিউট করতে ব্যবহৃত হয়। যদিও এরা উভয়ই SQL স্টেটমেন্ট চালানোর জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে এবং তারা বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়।

১. EXEC কমান্ড

EXEC (বা EXECUTE) কমান্ডটি ডাইনামিক SQL স্টেটমেন্ট এক্সিকিউট করার জন্য ব্যবহৃত হয়। এটি স্ট্যাটিক এবং ডাইনামিক SQL উভয়ই এক্সিকিউট করতে সক্ষম, তবে ডাইনামিক SQL ব্যবহারে সাধারণত সঠিক ব্যবহার করা উচিত।

উদাহরণ:

DECLARE @sqlQuery NVARCHAR(MAX);
SET @sqlQuery = N'SELECT * FROM Employees WHERE Department = ''HR'';';
EXEC sp_executesql @sqlQuery;

এখানে:

  • @sqlQuery নামের একটি পরিবর্তনশীল তৈরি করা হয়েছে, যেখানে ডাইনামিক SQL স্টেটমেন্ট (এই ক্ষেত্রে SELECT স্টেটমেন্ট) রাখা হচ্ছে।
  • এরপর EXEC বা sp_executesql দিয়ে SQL এক্সিকিউট করা হয়েছে।

২. sp_executesql কমান্ড

sp_executesql একটি স্টোরড প্রোসিডিউর যা ডাইনামিক SQL স্টেটমেন্ট এক্সিকিউট করতে ব্যবহৃত হয়, এবং এটি বিভিন্ন সুবিধা প্রদান করে, যেমন ইনপুট প্যারামিটার ব্যবহার করা এবং ক্যাশিং সুবিধা। এটি EXEC থেকে কিছুটা উন্নত, বিশেষত যখন SQL কোডে প্যারামিটার ব্যবহার করা হয়। sp_executesql এর মাধ্যমে আপনি একাধিক প্যারামিটার পাস করতে পারেন এবং কোডটি পুনঃব্যবহারযোগ্য হতে পারে।

উদাহরণ:

DECLARE @Department NVARCHAR(100) = 'HR';
DECLARE @sqlQuery NVARCHAR(MAX);

SET @sqlQuery = N'SELECT * FROM Employees WHERE Department = @Department;';
EXEC sp_executesql @sqlQuery, N'@Department NVARCHAR(100)', @Department;

এখানে:

  • @Department একটি প্যারামিটার হিসেবে ব্যবহার করা হয়েছে, এবং sp_executesql এর মাধ্যমে সেই প্যারামিটার SQL স্টেটমেন্টে পাস করা হয়েছে।
  • N'@Department NVARCHAR(100)' - এই অংশে প্যারামিটারটি এবং তার ডেটা টাইপ ঘোষণা করা হয়েছে।
  • @Department পরবর্তী আর্গুমেন্ট হিসাবে পাস করা হয়েছে।

পার্থক্য: EXEC এবং sp_executesql

বৈশিষ্ট্যEXECsp_executesql
পারফরম্যান্সসাধারণত কম পারফরম্যান্স (বিশেষ করে প্যারামিটার ব্যবহার না করলে)ভালো পারফরম্যান্স, কারণ এটি প্যারামিটার গ্রহণ করে এবং ক্যাশিং সুবিধা দেয়
প্যারামিটার ব্যবহারপ্যারামিটার ব্যবহার করা কঠিন।প্যারামিটার ব্যবহার করা সহজ এবং এটি পুনঃব্যবহারযোগ্য।
ডাইনামিক SQL এক্সিকিউশনসহজ, তবে শুধুমাত্র স্ট্যাটিক টেক্সট স্টেটমেন্টের মতো কাজ করেডাইনামিক SQL এক্সিকিউশন এবং প্যারামিটার ব্যবহার করা যায়।
কোড ক্যাশিংকোড ক্যাশিং হয় না।ক্যাশিং সমর্থিত, যা একই কোডের জন্য পুনরায় এক্সিকিউশনকে দ্রুত করে।

উদাহরণ হিসেবে তুলনা:

১. EXEC এর মাধ্যমে SQL এক্সিকিউট:

DECLARE @sqlQuery NVARCHAR(MAX);
SET @sqlQuery = N'SELECT * FROM Employees WHERE Department = ''HR'';';
EXEC(@sqlQuery);

এখানে:

  • @sqlQuery একটি স্টোরড SQL স্টেটমেন্ট ধারণ করছে, এবং EXEC দিয়ে তা এক্সিকিউট করা হচ্ছে।

২. sp_executesql এর মাধ্যমে SQL এক্সিকিউট:

DECLARE @Department NVARCHAR(100) = 'HR';
DECLARE @sqlQuery NVARCHAR(MAX);

SET @sqlQuery = N'SELECT * FROM Employees WHERE Department = @Department;';
EXEC sp_executesql @sqlQuery, N'@Department NVARCHAR(100)', @Department;

এখানে:

  • @Department প্যারামিটার হিসাবে ব্যবহার করা হচ্ছে এবং এটি sp_executesql এর মাধ্যমে পাস করা হচ্ছে।

সারাংশ

  • EXEC সাধারণত ডাইনামিক SQL এক্সিকিউট করার জন্য ব্যবহৃত হয়, কিন্তু এটি প্যারামিটার ব্যবহার করতে খুব সহজ নয়।
  • sp_executesql উন্নত এবং কার্যকরী, বিশেষত যখন আপনি প্যারামিটার ব্যবহার করতে চান এবং ডাইনামিক SQL এক্সিকিউট করতে চান। এটি কোড ক্যাশিং সুবিধা দিয়ে পারফরম্যান্স বাড়াতে সাহায্য করে।

তবে, যখন প্যারামিটার ব্যবহৃত হয় এবং পারফরম্যান্সের দিকে মনোযোগ দিতে হয়, তখন sp_executesql পছন্দযোগ্য।

Content added By
Promotion

Are you sure to start over?

Loading...